// 模拟 node 环境中 path 对象 的各个方法

export const path = {
	join: (...args) => {
		// 将多个路径段合并为统一路径
		return args.join('/').replace(/\/+/g, '/');
	},
	resolve: (...args) => {
		// 模拟 resolve，处理 . 和 ..
		let joined = path.join(...args);
		const parts = joined.split('/');
		const res = [];
		parts.forEach(part => {
			if (part === '' || part === '.') return;
			if (part === '..') {
				res.pop();
			} else {
				res.push(part);
			}
		});
		return '/' + res.join('/');
	},
	dirname: (p) => {
		// 返回除最后一个路径段之外的路径
		return p.substring(0, p.lastIndexOf('/')) || '/';
	},
	basename: (p) => {
		// 返回路径的最后一部分
		return p.substring(p.lastIndexOf('/') + 1);
	},
	extname: (p) => {
		// 返回最后一个 . 及之后的字符串作为扩展名
		const base = path.basename(p);
		const index = base.lastIndexOf('.');
		return index !== -1 ? base.substring(index) : '';
	}
};

export default path;